﻿// Código desenvolvido na integra por João Ribeiro
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlServerCe;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Web.Security;
using System.Windows.Forms;
using System.Configuration;

namespace GestaoContas
{
    public partial class Conta : Form
    {
        private string _connectionStringLogin;
        private string _connectionStringJardimBD;
        private string _nome;

        public string Nome
        {
            get { return _nome; }
            set { _nome = value; }
        }

        private string _morada;

        public string Morada
        {
            get { return _morada; }
            set { _morada = value; }
        }

        private int _telefone;

        public int Telefone
        {
            get { return _telefone; }
            set { _telefone = value; }
        }

        private int _telemovel;

        public int Telemovel
        {
            get { return _telemovel; }
            set { _telemovel = value; }
        }

        private string _email;

        public string Email
        {
            get { return _email; }
            set { _email = value; }
        }

        private int _contribuinte;

        public int Contribuinte
        {
            get { return _contribuinte; }
            set { _contribuinte = value; }
        }

        private string _tipoConta;

        public string TipoConta
        {
            get { return _tipoConta; }
            set { _tipoConta = value; }
        }

        private string _user;

        public string User
        {
            get { return _user; }
            set { _user = value; }
        }

        private string _password;

        public string Password
        {
            get { return _password; }
            set { _password = value; }
        }

        /// <summary>
        /// Construtor para criar uma conta
        /// </summary>
        public Conta()
        {
            InitializeComponent();
            _connectionStringLogin = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            _connectionStringJardimBD = ConfigurationManager.ConnectionStrings["ConnectionStringJardimBD"].ConnectionString;
            PreencheComboBoxTipoConta();
        }

        /*********************************************************************************************
         * Valores a serem usados na validação da conta, quando a dialog box fecha
         * Se os campos do telefone e telemóvel estiverem vazios, as suas propriedades tomam o valor 0
         * Se o nº de contribuinte estiver inválido a sua propriedade também toma o valor 0
         * Caso a password não estiver idêntica a sua propriedade é nula
         * *******************************************************************************************/
        private void buttonOk_Click(object sender, EventArgs e)
        {
            int telefone, telemovel, contribuinte;
            Nome = textBoxNome.Text;
            Morada = textBoxMorada.Text;
            if (textBoxTelefone.Text.Length > 0 && int.TryParse(textBoxTelefone.Text, out telefone))
            {
                Telefone = telefone;
            }
            else
            {
                Telefone = 0;
            }
            if (textBoxTelemovel.Text.Length > 0 && int.TryParse(textBoxTelemovel.Text, out telemovel))
            {
                Telemovel = telemovel;
            }
            else
            {
                Telemovel = 0;
            }
            Email = textBoxEmail.Text;
            if (textBoxContribuinte.Text.Length > 0 && int.TryParse(textBoxContribuinte.Text, out contribuinte))
            {
                Contribuinte = contribuinte;
            }
            else
            {
                Contribuinte = 0;
            }
            User = textBoxUser.Text;
            if (maskedTextBoxPassword.Text == maskedTextBoxConfirmaPassword.Text)
            {
                Password = maskedTextBoxPassword.Text;
            }
            else
            {
                Password = null;
            }
            TipoConta = comboBoxTipoConta.Text;
        }

        private void buttonCancel_Click(object sender, EventArgs e)
        {
            Close();
        }

        /// <summary>
        /// Preenche a combobox do tipo de conta com os dados da tabela aspnet_Roles
        /// </summary>
        private void PreencheComboBoxTipoConta()
        {
            try
            {
                string query = @"SELECT RoleName FROM aspnet_Roles";
                SqlConnection conn = new SqlConnection(_connectionStringLogin);

                SqlCommand cmd = new SqlCommand(query, conn);

                SqlDataAdapter da = new SqlDataAdapter();
                DataSet ds = new DataSet();

                da.SelectCommand = cmd;

                da.Fill(ds);
                comboBoxTipoConta.DisplayMember = "RoleName";
                comboBoxTipoConta.ValueMember = "RoleName";
                comboBoxTipoConta.DataSource = ds.Tables[0];
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
    }
}
